﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace Control_Add_Remove
{
    public partial class FormControl_Add_Remove : Form
    {
        /// <summary>
        /// Đối tượng điều khiển, cho Control sẽ thêm bớt trên giao diện
        /// </summary>
        TextBox textboxBlind = null;
        public FormControl_Add_Remove()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Thêm hoặt bớt một đối tượng điều khiển trên giao diện đồ họa bằng lệnh
        /// </summary>
        private void buttonAdd_Remove_Click(object sender, EventArgs e)
        {
            /// Kiểm tra xem đã tạo đối tượng điều khiển trước đây chưa.
            if (textboxBlind != null)
            {
                /// Một cách tham khảo để tìm ra Control bên trong một Control cha
                /// dưa trên Control.Name của đối tượng cần tìm
                if (this.Controls.Find("textbox nhap nhay", true).Count() > 0)
                {
                    Debug.Write("Tìm thấy rồi, ");
                }
                else
                {
                    Debug.Write("Không tìm thấy, ");
                }

                /// Nếu đã có đối tượng điều khiển, thì sẽ loại bỏ trên giao diện của Control cha
                groupBox2.Controls.Remove(textboxBlind);
                Debug.WriteLine(textboxBlind.Name);

                /// Và hủy bỏ đối tượng đó
                textboxBlind.Dispose();
                textboxBlind = null;
            }
            else
            {
                /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                /// Bước 1: Cấu hình đối tượng Control muốn thêm
                /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                /// Nếu chưa có đối tượng điều khiển, thì sẽ tạo thêm trên giao diện
                textboxBlind = new TextBox();
                /// Thiết lập vị trí của Control. Đây là vị trí tương đối, của Control
                /// hiện tại, bên trong một Control khác sẽ khai báo sau
                textboxBlind.Location = new System.Drawing.Point(20, 20);
                /// Thiết lập kích thước của Control
                textboxBlind.Size = new System.Drawing.Size(200, 20);
                /// Đặt text hiển thị mặc định
                textboxBlind.Text = "www.dce.hut.edu.vn";
                /// Đặt tên cho Control, để tiện tìm kiếm về sau nếu không sử dụng tên biến
                textboxBlind.Name = "textbox nhap nhay";

                /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                /// Bước 2: Đặt Control mới thêm vào bên trong một Control cha khác
                /// Control cha có thể là Form hiện tại (dùng con trỏ this)
                /// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                // Chú ý rằng, mặc dù FormControl_Add_Remove chứa groupBox1, groupBox1 chứa groupBox2 
                // nhưng KHÔNG được dùng this.groupBox1.groupBox2.Controls.Add()
                this.groupBox2.Controls.Add(textboxBlind);

                // Chú ý rằng, nếu bổ sung cùng 1 Control nhưng vào cả 2 Control cha
                // thì chỉ có lệnh gán cuối cùng có tác dụng. Ví dụ lệnh sau:
                //this.Controls.Add(textboxBlind);
            }
        }

        private void FormControl_Add_Remove_Load(object sender, EventArgs e)
        {

        }

    }
}
